home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2007 January
/
PCWorld_2007-01_cd.bin
/
v cisle
/
hotkey
/
AutoHotkey104504_Install.exe
/
AutoHotkey.chm
/
docs
/
scripts
/
numpad000.ahk
< prev
next >
Wrap
Text File
|
2006-11-15
|
2KB
|
62 lines
; Numpad 000 Key
; http://www.autohotkey.com
; This example script makes the special 000 key that appears on certain
; keypads into an equals key. You can change the action by replacing the
; ôSend, =ö line with line(s) of your choice.
#MaxThreadsPerHotkey 5 ; Allow multiple threads for this hotkey.
$Numpad0::
#MaxThreadsPerHotkey 1
; Above: Use the $ to force the hook to be used, which prevents an
; infinite loop since this subroutine itself sends Numpad0, which
; would otherwise result in a recursive call to itself.
SetBatchLines, 100 ; Make it run a little faster in this case.
DelayBetweenKeys = 30 ; Adjust this value if it doesn't work.
if A_PriorHotkey = %A_ThisHotkey%
{
if A_TimeSincePriorHotkey < %DelayBetweenKeys%
{
if Numpad0Count =
Numpad0Count = 2 ; i.e. This one plus the prior one.
else if Numpad0Count = 0
Numpad0Count = 2
else
{
; Since we're here, Numpad0Count must be 2 as set by
; prior calls, which means this is the third time the
; the key has been pressed. Thus, the hotkey sequence
; should fire:
Numpad0Count = 0
Send, = ; ******* This is the action for the 000 key
}
; In all the above cases, we return without further action:
CalledReentrantly = y
return
}
}
; Otherwise, this Numpad0 event is either the first in the series
; or it happened too long after the first one (e.g. perhaps the
; user is holding down the Numpad0 key to auto-repeat it, which
; we want to allow). Therefore, after a short delay -- during
; which another Numpad0 hotkey event may re-entrantly call this
; subroutine -- we'll send the key on through if no reentrant
; calls occurred:
Numpad0Count = 0
CalledReentrantly = n
; During this sleep, this subroutine may be reentrantly called
; (i.e. a simultaneous "thread" which runs in parallel to the
; call we're in now):
Sleep, %DelayBetweenKeys%
if CalledReentrantly = y ; Another "thread" changed the value.
{
; Since it was called reentrantly, this key event was the first in
; the sequence so should be suppressed (hidden from the system):
CalledReentrantly = n
return
}
; Otherwise it's not part of the sequence so we send it through normally.
; In other words, the *real* Numpad0 key has been pressed, so we want it
; to have its normal effect:
Send, {Numpad0}
return